The present invention pertains to the field of computer systems. More particularly, this invention pertains to the field of performing a vertical scale filter function in a graphics device.
A key requirement for a graphics controller is the ability to take a display stream that represents pixels on a display monitor and scale that display stream to any arbitrary size. An example use of this feature is video conferencing, where the display stream represents perhaps a display of 320 pixels across by 240 lines high and a full screen display of 1024 pixels across by 768 lines high is desired.
One technique that can be employed to perform the scale function involves simply replicating pixels and lines. For example, if a vertical scale factor of three is desired, each line of the display stream can be replicated three times and subsequently displayed as three sequential lines. This technique has the drawback of producing a xe2x80x9cblockyxe2x80x9d display with a significant deterioration of display quality.
An additional technique that can be employed to perform the scale function is bilinear interpolation. For a vertical scale function, values are interpolated between two lines to generate smooth data values between the two lines. This technique typically produces a display with a much less significant deterioration of display quality as compared to the replication technique discussed above.
A primary drawback to prior bilinear interpolation vertical scale filter implementations is the associated hardware costs. The graphics display subsystem must simultaneously access pixels from two adjacent source data lines from which it generates vertically smoothed output values. Prior implementations include two independent line buffers, one for each of the two adjacent source data lines. For an input stream of 720 pixels across at 16 bits per pixel, each line buffer would need to include 1440 bytes of storage.
FIG. 1 is a block diagram of an example prior implementation of a vertical scale function. A vertical scale filter 130 receives input from a line buffer 110 and a line buffer 120. The line buffers 110 and 120 store display line data received from a graphics memory 150. The vertical scale filter 130 takes the display line data stored in the line buffers 110 and 120 and interpolates values between the display line data stored in the line buffers to produce vertically smoothed output values. These output values are delivered to a display function 140.